package ar.frba.utn.diseñosistemas.TP2;

import java.util.ArrayList;

public class FiltrarPorClase implements IBuscador {

	private IBuscador decorado;
	
	public FiltrarPorClase(IBuscador decorado)
	{
		this.decorado = decorado;
	}
	
	public ArrayList<Itinerario> Buscar(Busqueda unaBusqueda)
	{
		ArrayList<Itinerario> filtrados = new ArrayList<Itinerario>();
		ArrayList<Itinerario> itinerarios = decorado.Buscar(unaBusqueda);
		
		Clase[] filtros = unaBusqueda.getClases();
		
		if (filtros == null)
			return itinerarios;
		
		for (Itinerario itinerario : itinerarios)
		{
			Boolean agregarItinerario = true;
			
			for (Asiento asiento : itinerario.getAsientos()) 
			{
				if (!cumpleAlgunFiltro(asiento, filtros))
				{
					agregarItinerario = false;
					break;
				}
			}
			
			if (agregarItinerario)
				filtrados.add(itinerario);
		}
		
		return filtrados;
	}
	
	private Boolean cumpleAlgunFiltro(Asiento asiento, Clase[] clases)
	{
		for (Clase clase : clases) 
		{
			if (asiento.getClase() == clase)
				return true;
		}
		
		return false;
	}

}
